package com.fare.taluo.core.domain.crawl;

import java.util.Date;
import java.util.List;

import com.dayatang.domain.EntityRepository;

/**
 * 抓取任务DAO
 * 
 * @author kelvin_L
 */
public interface TaskTemplateEntityRepository extends EntityRepository {

	/**
	 * 获取一个任务
	 * 
	 * @param id
	 * @return
	 */
	public TaskTemplateEntity findTaskInfoEntity(long id) throws Exception;

	/**
	 * 删除一个任务
	 * 
	 * @param ac
	 */
	public void deleteTaskInfoEntity(TaskTemplateEntity ti) throws Exception;

	/**
	 * 保存或更新一个任务
	 * 
	 * @param ac
	 */
	public void saveOrUpdateTaskInfoEntity(TaskTemplateEntity ti) throws Exception;

	/**
	 * 按条件查询任务的数量
	 * @param grabChannel抓取渠道
	 * @param fromCity   出发地
	 * @param toCity     目的地
	 * @param grabsope   航班天数
	 * @return
	 */
	public int countTaskInfoEntityCriteria(String grabChannel,
			String fromCity, String toCity, Date validityFrom,int grabsopeBegin,int grabsopeEnd);
	

	/**
	 * 根据分页查询任务
	 * @param grabChannel抓取渠道
	 * @param fromCity   出发地
	 * @param toCity     目的地
	 * @param grabsope   航班天数
	 * @param pageNum    页码，从1开始
	 * @param pageSize   分页大小
	 * @return
	 */
	List<TaskTemplateEntity> findTaskInfoEntityCriteriaList(String grabChannel,
			String fromCity, String toCity, int grabsopeBegin,int grabsopeEnd,Date validityFrom, int pageNum,int pageSize);
	
	/**
	 * 通过条件返回
	 * @param grabChannel抓取渠道
	 * @param fromCity   出发地
	 * @param toCity     目的地
	 * @param grabsope   航班天数
	 * @return
	 */
	List<TaskTemplateEntity> findTaskInfoByConsdions(String grabChannel, String fromCity, String toCity, int grabsopeBegin,int grabsopeEnd);
	List<TaskTemplateEntity> findTaskInfoByConsdion(String grabChannelId, String fromCity, String toCity);
	
	/**
	 * 根据航空公司返回航线
	 * @param grabChannel
	 * @return
	 */
	List<TaskTemplateEntity> findTaskInfoByGrabChannel(String grabChannel);

	
	/**
	 * 通过一定条件返回任务，当添加一个新任务之前通过此接口，不为null才可以添加新任务
	 * @param grabChannel 抓去渠道
	 * @param fromCity 出发城市
	 * @param toCity 到达城市
	 * @param validityFrom 抓取时间段
	 * @param validityTo 抓取时间段
	 * @param grabsopeBegin 日期范围 开始
	 * @param grabsopeEnd 日期范围结束
	 * @return
	 */
	public  TaskTemplateEntity findTaskInfoEntityVo(String grabChannel,
			String fromCity, String toCity, Date validityFrom,Date validityTo,int grabsopeBegin,int grabsopeEnd);
	
	
	public boolean existTask(String fromCity,String toCity,String hbaseKey);
	/**
	 * 根据渠道ID获得任务模板
	 * @param grabChannelId
	 * @return
	 */
	public List<TaskTemplateEntity> findByChannelId(long grabChannelId);
	
	public List<TaskTemplateEntity> findByHbaseKey(String hbaseKey);
	/**
	 * 通过JDBC查询
	 * @param attachHbaseKey
	 * @return
	 */
	public List<TaskTemplateEntity> findJDBCByHbaseKey(String attachHbaseKey);
	public int findJDBCByHbaseKeys(String attachHbaseKey);
}
